const db = require('../db/index')
//加密密码的包
const bcrypt = require('bcryptjs')
//导入生成token 的包
const jwt = require('jsonwebtoken')
//导入全局配置
const config = require('../config')
exports.reguser=(req,res)=>{

    //获取客户端提交到服务器的用户信息
    const userinfo = req.body
    //对表单数据进行效验
    // if(!userinfo.username || !userinfo.password)
    // res.send({
    //     status:0,
    //     message:'用户名或者密码不合法'
    // })

    const sqlStr = 'select * from users where username = ?'
    db.query(sqlStr,userinfo.username,(err,results) =>{
        if(err) {
            // res.send({
            //     status:0,
            //     message:err.message
            // })
            return res.fail(err)
        }
        //判断用户名是否被占用
        if(results.length > 0){
            // return res.send({
            //     status:0,
            //     message:'用户名被占用，请更换其他用户名'
            // })
            return res.fail('用户名被占用，请更换其他用户名')
        }

        userinfo.password = bcrypt.hashSync(userinfo.password,15)
        // console.log(userinfo.password);

        //定义插入新用户的sql
        const sql = 'insert into users set ?'
        db.query(sql,{username:userinfo.username,password:userinfo.password},(err,results) =>{
            if(err) 
            // return res.send({
            //     status:0,
            //     message:err.message
            // })
            return res.fail(err)
            if(results.affectedRows !== 1 ) 
            // return res.send({
            //     status:0,
            //     message:"用户注册失败,请稍后再试"
            // })
            res.fail("用户注册失败,请稍后再试")
            res.fail(
                '注册成功',
                 200,
            )
        })
        
    })
}

//登录

exports.login = (req,res)=>{
    //接收表单数据
    const userinfo = req.body

    const sql = `select * from users where username = ? `
    db.query(sql,userinfo.username,(err,results) =>{
        if(err) return res.fail(err)
        if(results.length !==1) return res.fail('没有该用户请注册')
        //判断密码是否错误
        const compareResult =  bcrypt.compareSync(userinfo.password,results[0].password)
        if(!compareResult) return res.fail('登录失败!请检查你的账号或密码')
        
        //生成token字符串
        const user = {...results[0],password:'',user_pic:''} //es6去除password
        // console.log(user);
        const tokenStr = jwt.sign(user,config.jwtSecretKey,{expiresIn:config.expiresIn})
        // console.log(tokenStr);
        res.send({
            status:200,
            message:'登录成功',
            token:'Bearer '+tokenStr
        })
    })
   
}

